
package com.x52im.rbchat.network.http.async;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;

import com.eva.framework.dto.DataFromServer;
import com.x52im.rbchat.network.http.HttpRestHelper;
import com.x52im.rainbowchat.http.logic.dto.GroupEntity;
import com.x52im.rbchat.cache.GroupsProvider;

import java.util.ArrayList;

/**
 * 拉取"我"的群组列表异步实现类（本类不涉及任何UI操作，因而可以安全地用作后台执行）。
 */
public abstract class RefreshGroupsAsync extends AsyncTask<String, Integer, DataFromServer> {
    private final static String TAG = RefreshRosterAsync.class.getSimpleName();

    private Context context = null;

    public RefreshGroupsAsync(Context context) {
        this.context = context;
    }

    @Override
    protected DataFromServer doInBackground(String... parems) {
        return GroupsProvider.getGroupsListFromServer(context);
    }

    protected void onPostExecute(DataFromServer dfs) {
        // 取好友列表数据成功则把最新列表数据暂存备用
        if (dfs != null && dfs.isSuccess()) {
            // 从服务端取过来的最新群组列表
            ArrayList<GroupEntity> newRosterList =
                    HttpRestHelper.parseGetGroupsListFromServer((String) dfs.getReturnValue());

            // 用最新的好友表数据刷新好友列表
//          putFriends(newRosterList);
            postData(newRosterList);

            Log.d(TAG, "群组列表读取成功，共有群组数：" + newRosterList.size());
        } else
            Log.e(TAG, "群组列表从服务端获取失败.");
    }

    protected abstract void postData(ArrayList<GroupEntity> newDatas);
}
